/**
 *  Copyright 2011 Marco Berri - marcoberri@gmail.com
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and limitations under the License.
 **/
package com.cron.job.stats;

/**
 *
 * @author Marco Berri marcoberri@gmail.com
 */
import com.utils.StringUtil;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.quartz.*;

/**
 * statistiche: creazione della tabella con gli user agent
 * 
 * @author marco
 */
public class UserAgentList extends com.cron.job.Base {

    /**
     *
     * @param context
     * @throws JobExecutionException
     */
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {


        super.execute(context);

        debug("Start execute job " + this.getClass().getName());

        try {
            String array_query[] = {"select_header_view", "select_header_save", "select_header_qrcode"};
            for (String q : array_query) {

                Statement stat = this.conn_stats.createStatement();
                Statement stat2 = this.conn_stats.createStatement();

                ResultSet rsstats = stat.executeQuery(properties.get(q));
                int c = 0;
                while (rsstats.next()) {
                    c++;
                    String header = rsstats.getString(1);
                    if (StringUtil.isNullOrEmpty(header)) {
                        continue;
                    }

                    String ua = null;
                    try {
                        String[] headers = header.split("\\|\\|");
                        for (String head : headers) {

                            String[] k_v = head.split("\\|");

                            if (!k_v[0].equalsIgnoreCase("user-agent")) {
                                continue;
                            }

                            ua = k_v[1];
                            break;

                        }
                    } catch (Exception e) {
                        debug("Exception", e);
                        continue;
                    }

                    if (StringUtil.isNullOrEmpty(ua)) {
                        continue;
                    }

                    ua = normalize(ua);

                    ResultSet rsstats_stats = stat2.executeQuery(properties.get("select_user_agent").replaceAll("\\$ua", ua));

                    if (!rsstats_stats.next()) {
                        stat2.execute(properties.get("insert_user_agent").replaceAll("\\$ua", ua));
                    }

                }

            }


        } catch (SQLException ex) {
            fatal("SQLException", ex);
        }

        debug("End execute job " + this.getClass().getName());

    }

    /**
     *
     * @param text
     * @return
     */
    public String normalize(String text) {
        return text.replaceAll("'", "-");

    }
}
